Window placement in a visual display

ABSTRACT

A method, computer program product, and system are provided for window placement in a visual display of a data processing system. A computer gathers data of user preferences of size and position of windows in a visual display through use of the visual display, wherein windows relate to resources accessed by a user of the data processing system. Upon a new display action, the computer determines a current context of the visual display, wherein the current context includes existing windows in the visual display. The computer applies the data of user preferences to the new display action to provide an updated display context, wherein the applying includes influencing one or more sizes and one or more positions of one or more windows in the visual display.

BACKGROUND

When doing work on a computer, a user will often be working acrossmultiple applications. Rather than having only one application open infull screen mode at a time, a user will often have these windows laidout in such an arrangement that the user can see multiple applicationsat any one time, making the applications easy to access and viewablewithout having to do any switching to improve user productivity. Thesame can be said about websites, where a user may have multiple websitesopen in different browser windows.

Currently, a user has to manually position and resize these windows, oneither a single desktop or multiple desktops and either on a singlemonitor or multiple monitors, to fit their preference. Opening anotherapplication window may place it at a default position and size. If thisposition and size does not match the user's preference, the user has tomanually move that window to where they want it, which may involvehaving to reorganize and resize other windows.

For some modern operating systems, the default position and size are theplace where the application was closed last. Using the position theapplication was closed last can cause user annoyance since it may nowcover another application the user is using. The desired size of anapplication window when a user starts using it and when they finish canbe different.

SUMMARY

According to an aspect of the present disclosure there is provided acomputer-implemented method for window placement, comprising: gatheringdata of user preferences of size and position of windows in a visualdisplay through use of the visual display, wherein windows relate toresources accessed by a user of a data processing system; determining,upon a new display action, a current context of the visual display,wherein the current context includes existing windows in the visualdisplay; and applying the data of user preferences to the new displayaction to provide an updated display context, wherein the applyingincludes influencing one or more sizes and one or more positions of oneor more windows in the visual display.

According to another aspect of the present disclosure there is provideda system for window placement, comprising: one or more processors and amemory communicatively coupled to the one or more processors, whereinthe memory comprises instructions which, when executed by the one ormore processors, cause the one or more processors to perform a methodcomprising: gathering data of user preferences of size and position ofwindows in a visual display through use of the visual display, whereinwindows relate to resources accessed by a user of a data processingsystem; determining, upon a new display action, a current context of thevisual display, wherein the current context includes existing windows inthe visual display; and applying the data of user preferences to the newdisplay action to provide an updated display context, wherein theapplying includes influencing one or more sizes and one or morepositions of one or more windows in the visual display.

According to a further aspect of the present disclosure there isprovided a computer program product for window placement, the computerprogram product comprising a computer readable storage medium havingprogram instructions embodied therewith, the program instructionsexecutable by a processor to cause the processor to: gather data of userpreferences of size and position of windows in a visual display throughuse of the visual display, wherein windows relate to resources accessedby a user of a data processing system; determine, upon a new displayaction, a current context of the visual display, wherein the currentcontext includes existing windows in the visual display; and applyingthe data of user preferences to the new display action to provide anupdated display context, wherein the applying includes influencing oneor more sizes and one or more positions of one or more windows in thevisual display.

The above summary is not intended to describe each illustratedembodiment or every implementation of the present disclosure.

BRIEF DESCRIPTION OF THE DRAWINGS

The drawings included in the present application are incorporated into,and form part of, the specification. They illustrate embodiments of thepresent disclosure and, along with the description, serve to explain theprinciples of the disclosure. The drawings are only illustrative ofcertain embodiments and do not limit the disclosure.

FIG. 1 is a flow diagram of an example method for window placement in avisual display in accordance with some embodiments of the presentdisclosure.

FIG. 2 is a block diagram illustrating an example system in accordancewith some embodiments of the present disclosure.

FIG. 3 is block diagram of an example system in accordance with someembodiments of the present disclosure.

FIG. 4 is a block diagram of a computing device in which someembodiments of the present disclosure may be implemented.

It will be appreciated that for simplicity and clarity of illustration,elements shown in the figures have not necessarily been drawn to scale.For example, the dimensions of some of the elements may be exaggeratedrelative to other elements for clarity. Further, where consideredappropriate, reference numbers may be repeated among the figures toindicate corresponding or analogous features.

While the invention is amenable to various modifications and alternativeforms, specifics thereof have been shown by way of example in thedrawings and will be described in detail. It should be understood,however, that the intention is not to limit the invention to theparticular embodiments described. On the contrary, the intention is tocover all modifications, equivalents, and alternatives falling withinthe spirit and scope of the invention.

DETAILED DESCRIPTION

The described method, computer program product, and system providewindow placement for resource windows in a visual display of a computeror data processing system. Embodiments of this disclosure provide forgathering data of the user's preferred layouts based on the type ofresources being used and the size and positions in which the userusually has the resource windows displayed. The resources may beapplications, operating system windows, or other resources representedby a window.

As used herein, a new display action can be an action affectingplacement of one or more resource windows on one or more displays, suchas opening a resource window or adding or removing another displaymonitor. When a new display action occurs, embodiments of thisdisclosure provide for referencing an aggregation of the userpreferences to determine the position where the user might wantwindow(s) displayed and the size of those window(s) and applies thepreferences while taking into account existing windows that aredisplayed.

When the new display action is access to a resource by opening aresource window, opening the window is carried out in a size and at alocation determined as a function of the data stored including data forthe window during previous accesses to the resource and using analgorithm to determine where the user would prefer to have the resourcewindow open and what size it should be.

When the new display action adds or removes a display screen or monitorfrom a user's display setup, the user preferences for window size andlocation of resources in the overall display are accommodated. Forexample, removing a monitor may result in condensing all open windowsinto one monitor, while adding a new monitor expands the position ofopen windows into their preferred places on the new monitor.

Referring to FIG. 1, a flow diagram shows an example method 100 forwindow placement in a visual display in accordance with some embodimentsof the present disclosure. In some embodiments, method 100 may beperformed by an application or a service at the operating system level,which may run in the background while a user is using the computingdevice. In other embodiments, method 100 can be an application orservice at a different level. In the following discussion, method 100will be referred to as being performed by a window service, but this isnot to be read as limiting method 100.

At 101, the window service may gather data of user preferences of sizeand position of windows in a visual display of a computing device. Theposition may include overlapping of windows and ordering of windowswhere overlapping. The visual display may include one or more displaymonitors across which the windows are positioned.

In some embodiments, operation 101 may be performed by gathering datafrom a windows manager of the operating system of the computing device.A windows manager may keep track of open windows and their size andposition.

In some embodiments, the gathering of data of user preferences at 101may be by gathering data using periodic screen capture or screenscraping techniques of the visual display. For example, this may occurat regular intervals or when a new display action takes place thatchanges the window display.

Periodic screen capture techniques include taking “snapshots” of thecurrent state of all application windows currently open in the visualdisplay. These snapshots can be analyzed by object recognition and imagesegmentation to determine which parts of the image are windows and toextract information including the application name, its size, position,and a monitor the window is displayed on. The number of monitors mayalso be recorded with the snapshot. In some embodiments, the number ofmonitors may be detected by consulting a device manager or detectinginputs into graphics ports on the computing device.

The data gathering of user preferences at 101 does not require specificuser input but relies on usual user interaction with windows in thedisplay, including user movement of windows when opened or during use.The data can be gathered and preferences learned though historical userinteraction of the visual display of resources and updated as the usercontinues to interact with the visual display of resources.

At 102, the window service may store user preferences by a category ofwindow resource. This may involve receiving categorization or tagging ofwindows as belonging to a category of resources. The categorization ortagging may be carried out by automatic determination of a type ofresource or by manual user input. In some embodiments, tags may beassigned to group applications together based on what the applicationsare used for. For example, different web browser may be given a “webbrowser” tag, while different code editors may be given a “code editor”tag, etc.

In some embodiments, the window service may use a remote database tostore and retrieve tags for different known resources that may beavailable to multiple users and which may be updated by viewing data ofhow individual users have tagged applications in their local system. Insome embodiments, the user's tagging of applications can override anytags retrieved from a remote database. In some embodiments, tags mayonly be retrieved from a remote database when an application which theuser has not tagged is detected.

The stored data may include the size and position of each window andwhich monitor it is placed on (if more than one monitor is present)along with the application name and tag. Collectively, the stored datamay provide an automatically gathered history of the user's window sizeand position configurations building a profile of the user preferences.

At 103, the window service may determine that a new display action hasoccurred, resulting in a change to the arrangement of windows in thevisual display. This new display action may be, for example, opening aresource window or adding or removing a monitor. If no new displayaction is carried out, method 100 may loop back to operation 101 tocontinue gathering the user preferences.

At 104, the window service may determine the current context of thedisplay at the time of the new display action. This may entail capturingdetails of the currently open windows and, optionally, what type of datathe windows are displaying. For example, the current context of thedisplay may include: size and positions of open windows, the positionand activity of the mouse on the display, which parts of the screen arechanging such as a video playing, and any empty space on the display.

At 105, the window service may retrieve user preferences from the storeddata relating to the new display action. At 106, the window service mayapply the user preferences for the display action in the current displaycontext. Applying the user preferences may include applying the userpreferences with consideration of the current context of the display.

At 107, the window service may position and size the windows in the newdisplay action. Upon a new display action, such as opening a new window,the user's preference profile can be combined with the currentconfiguration of open windows as parameters to a function, whichdetermines how the new display action will be displayed. In the case ofthe new display action being a new window opening this determines wherethe new application will be opened and what size and can also includemoving and/or resizing existing windows.

In some embodiments where a new display action is opening a new window,the method may use an algorithm which takes an aggregation of the userpreference data to determine where the user would prefer to have awindow open and at what size, taking into account the current context ofthe visual display, before opening the new window at or close to thepreferred position and size in the visual display. In some embodiments,this may be carried out using a machine learning technique, such as aneural network, and the window service may predict where the user wouldprefer the window to be opened and what size it should be.

The input parameters for the algorithm may include: the gathered datafor previous occurrences of when the resource for the new window waspreviously running, including the size and positions of other windowsand the number of monitors, and the current context of the display,including the size and positions of open windows, the position andactivity of the mouse on the display, which parts of the display arechanging such as a video playing, any empty space on the screen, etc.The algorithm may attempt to match the current context of the display toa previous snapshot where the resource was running to decide a size andposition in which to open the resource window.

In situations where more data is required, such as when opening a newlyinstalled program or when there is not enough previously gathered data,resources which share the same tag may be substituted for matching thecontext and the algorithm may be run as if it is for another resourcewhich has the same tag.

In some embodiments, existing windows in the current context may bemoved to make the screen match a previous context or more closely alignwith the user preferences according to the windows that will be openafter the new display action. The algorithm may prioritize space in thevisual display that is currently not being used and may safeguard spacein the visual display where the mouse is currently located or in whichthere is a running video or other movement.

Data about the preferred sizes and positions for specific resourcewindows may be gathered from other users, stored on a remote database,and factored into the algorithm. Data gathered from other users may begiven a lower weight or priority in the algorithm or may only be usedwhen data does not exist for the current user of the computing device(e.g., when an application is first used or when a user first uses acomputing device).

At 108, the window service receives a user reaction to the position andsize of the windows in the new display action and may add this to thegathered user preferences for future reference. Once a new resourcewindow opens, the system learns from the user's reactions to the newlyopened window to improve its future runs of the algorithm.

For example, if a user moves a window further away from where it wasoriginally placed and/or resizes it, this can indicate to the windowservice that the user disliked its prediction and so it will factor thisinto future predictions for that application, by adjusting theweightings of the algorithm. If, for example, the user onlymoves/resizes the window slightly or does not move it at all then thisconfirms the system's prediction of where and what size the user wantsthe window to be placed, which the window service will attempt to follownext time it opens the given resource. Other user reactions are possiblein accordance with this disclosure, including a user providing directfeedback to the window service (e.g., entering data into a userinterface for the window service).

In some embodiments, the window service may use machine learningtechniques to create a decision tree from the size and position ofwindows taken from the screenshots or from the window management data.Example actions that the window service may take using the decision treecan be as follows. When a new window is opened, the window service maygo through the decision tree for the currently open windows with theirposition and the window being opened (excluding its positional data). Atthe bottom of the tree the window service may reach the nearest matchingwindow layout for the current context. Nearest matching may becalculated by the layout that requires least movement of windows tocreate. If no direct match of applications is found, then the windowservice finds a match for applications with corresponding tags. Thewindow service then moves the open windows to their expected positionfrom the tree. The resource that is being opened is then positioned atthe expected position for the user.

In the example of the decision tree, user feedback of a new window maybe implemented as follows. In a set time period (for example, 30seconds), if the windows are rearranged, this new layout is added to thetree and the previous layout's weighting is reduced. If the windows arenot moved, then the layout's weighting is increased. Further machinelearning techniques such as decision forests and pruning can be appliedto improve accuracy.

In some embodiments where the new display action is the addition ofanother monitor, the user preferences may be to enlarge the existingwindows and spread them across the existing and additional monitors inan arrangement preferred by the user. For example, some types ofresource may be preferred by the user to be displayed on the additionalmonitor and others on a main or central monitor. The sizes of thewindows may be enlarged or reduced in a corresponding ratio to prior tothe new display action to make use of additional or restricted displayareas. When adding another monitor, the window service may effectivelyrun the open-window action again for the currently open windows butincluding the stored information about a preferred monitor.

The method 100 provides a cognitive element of determining the user'spreferred arrangements based on previous displays and applies thesepreferences when opening a new window. The described method removes theneed for any manual steps from the user. The method is reactive to theuser moving windows and opening new ones and tries to determine theuser's preferences cognitively.

Referring to FIG. 2, a block diagram shows an example system 200, inaccordance with some embodiments of the present disclosure. FIG. 2includes a computing device 210 with the described window placementsystem 220, which may be the window service described as performingmethod 100 of FIG. 1. The block diagram includes schematic flowillustrations of the described method.

The computing device 210 may include an operating system 270 and visualdisplay 280. The visual display 280 may be adapted to accommodate one ormore monitors providing the display across multiple monitors where thisoption is selected by a user of the computing device 210.

In some embodiments, the window placement system 220 may be anapplication or a service at the operating system level, which may run inthe background while the user is using the computing device 210. Theoperating system may run this itself with full access privileges.

The window placement system 220 may include a window monitor 230, acognitive component 240, and a window interceptor 250 as describedfurther below. A storage 260 may be provided locally, remotely, or acombination of both locally and remotely to the window placement system220 for storing and referencing data gathered and used by the windowplacement system 220.

As shown in block 211, the window monitor 230 may constantly read orpoll data from the user's windows from the operating system 270 and/orvisual display 280 and may determine what resource the window relatesto. This component may poll the data of all open windows. As shown inblock 221, the window monitor 230 may store new window data in thestorage 260, which may occur e.g., if resource windows have moved.Information about windows can be taken from the windows manager of anoperating system 270.

The storage 260 may store user preferences for window position and sizeand may be written/read by the window monitor 230, the cognitivecomponent 240, and the window interceptor 250. Data structures in thestorage 260 may contain window dimensions, position, resource name, tag,time of capture, etc.

The cognitive component 240 may process events and analyze data, asshown in block 222, to generate user preferences that are stored, asshown in block 223, and may learn from user actions after windows havechanged. The cognitive component 240 and/or storage 260 may maintainlistings of user preferences per resource and tag.

For resources that have no previous history but that have a tag, thecognitive component 240 may attempt to determine suitable position fromresources with the same tag. For example, a first preference may be froma user database and a second could be from known data.

Stored user preferences may be validated by a user's reaction to awindow placement. Weightings may be assigned to a window movement/resizeevent based on how soon the event occurred after the interceptor openeda new window. User window placement/resize events that happen shortlyafter a window is opened can be interpreted as a user reacting to thestored preference. If the user changes the window size/positiondramatically, then this new position may have a larger weighting inaffecting the stored preference. If the position/resize is relativelysmall, then this will validate that the preference is accurate (or closeto accurate) and may improve confidence in the answer or a variation ofthe answer. If a user opens a resource and does not change theposition/size (or modifies it only slightly) on multiple occasions, thenthe stored preference is validated.

The window interceptor 250 determines when a new display action hasoccurred, as shown in block 212, and intercepts the placement of windowsin the display. For example, when the operating system attempts to opena resource, the window interceptor 250 component may intercept theaction and fetch user preference data, shown in block 224, from thestorage 260 and replace whatever size/position at which the operatingsystem 270 was about to open the window with the size and positioncalculated using stored user preferences for that resource or action.This replacement of dimension/position for the action is shown in block213. If there is no stored preference for this resource (i.e. anapplication being opened for the first time), but it has an associatedtag for which a preference is stored, this preference may be usedinstead.

Referring to FIG. 3, illustrated is a block diagram of an example systemincluding computing device 210 having a visual display 280, inaccordance with some embodiments of the present disclosure. Computingdevice 210 of FIG. 3 can be the same computing device 210 as in FIG. 2.

The computing device 210 may include at least one processor 301, whichcan be a hardware module, or a circuit for executing the functions ofthe described components which may be software units executing on the atleast one processor. Multiple processors running parallel processingthreads may be provided enabling parallel processing of some or all ofthe functions of the components. Memory 302 may be configured to providecomputer instructions 303, including the operating system 270, to the atleast one processor 301 to carry out the functionality of thecomponents.

Further details of the component of the window placement system 220 areshown. The window placement system 220 may include a data gatheringcomponent 330 for gathering data of user preferences of size andposition of windows in the visual display 280. The data gatheringcomponent 330 may include a window monitor 230 for capturing andanalyzing data from the visual display 280. The data gathering component330 may also include a tagging component 331 for automatically ormanually providing a category tag for resource windows and/orapplications that correspond to resource windows. The data gatheringcomponent 330 may store the gathered and analyzed data from windowmonitor 230 and tagging component 331 in storage 260 in the computingdevice 210 or remotely accessible thereto.

The window placement system 220 also includes a window interceptor 250for intercepting a new display action. The window interceptor 250 mayinclude a new display action component 351 and a current contextcomponent 352. The new display action component 351 may be triggered bya new display action such as opening a new window for a resource or achange to the number of monitors in the visual display. The new displayaction component 351 may, upon a new display action, use the currentcontext component 352 to determine a current context of the displayincluding existing windows in the display. The current context component352 may use a window type component 353 to determine a type of anexisting window for consideration when rearranging existing windows. Thewindow interceptor 250 may also include an updated display component 354for updating the visual display 280 with applied user preferences asapplied by the cognitive component 240.

The window placement system 220 includes cognitive component 240, whichmay include a machine learning component 341 for learning userpreferences and applying these to resource windows in new displayactions as applied by the updated display component 354. The cognitivecomponent 240 may learn from the stored data gathered by the datagathering component 330. The cognitive component 240 may provide outputto be applied by the updated display component 354 when the new displayaction component 351 is triggered by a new display event, whileaccommodating the current context of the display as provided by thecurrent context component 352.

FIG. 4 depicts a block diagram a computing device in which someembodiments of the present disclosure may be implemented. The computingdevice 400 of FIG. 4 may be the computing device 210 shown in FIG. 2 andFIG. 3. It should be appreciated that FIG. 4 provides only anillustration of some embodiments and does not imply any limitations withregard to the environments in which different embodiments may beimplemented. Many modifications to the depicted environment may be made.

Computing device 400 can include one or more processors 402, one or morecomputer-readable RAMs 404, one or more computer-readable ROMs 406, oneor more computer readable storage media 408, device drivers 412,read/write (R/W) drive or interface 414, and network adapter orinterface 416, all interconnected over a communications fabric 418.Communications fabric 418 can be implemented with any architecturedesigned for passing data and/or control information between processors(such as microprocessors, communications and network processors, etc.),system memory, peripheral devices, and any other hardware componentswithin the system.

One or more operating systems 410, and application programs 411, such asthe window placement system 220 are stored on one or more of thecomputer readable storage media 408 for execution by one or more of theprocessors 402 via one or more of the respective RAMs 404 (which caninclude cache memory). In the illustrated embodiment, each of thecomputer readable storage media 408 can be a magnetic disk storagedevice of an internal hard drive, CD-ROM, DVD, memory stick, magnetictape, magnetic disk, optical disk, a semiconductor storage device suchas RAM, ROM, EPROM, flash memory, or any other computer readable storagemedia that can store a computer program and digital information, inaccordance with embodiments of the disclosure.

Computing device 400 can also include a R/W drive or interface 414 toread from and write to one or more portable computer readable storagemedia 426. Application programs 411 on computing device 400 can bestored on one or more of the portable computer readable storage media426, read via the respective R/W drive or interface 414 and loaded intothe respective computer readable storage media 408.

Computing device 400 can also include a network adapter or interface416, such as a TCP/IP adapter card or wireless communication adapter.Application programs 411 on computing device 400 can be downloaded tothe computing device from an external computer or external storagedevice via a network (for example, the Internet, a local area network orother wide area networks or wireless networks) and network adapter orinterface 416. From the network adapter or interface 416, the programsmay be loaded into the computer readable storage media 408. The networkmay comprise e.g., copper wires, optical fibers, wireless transmission,routers, firewalls, switches, gateway computers, and edge servers.

Computing device 400 can also include a display screen 420, a keyboardor keypad 422, and a computer mouse or touchpad 424. Device drivers 412interface to display screen 420 for imaging, to keyboard or keypad 422,to computer mouse or touchpad 424, and/or to display screen 420 forpressure sensing of alphanumeric character entry and user selections.The device drivers 412, R/W drive or interface 414, and network adapteror interface 416 can comprise hardware and software stored in computerreadable storage media 408 and/or ROM 406.

The present invention may be a system, a method, and/or a computerprogram product at any possible technical detail level of integration.The computer program product may include a computer readable storagemedium (or media) having computer readable program instructions thereonfor causing a processor to carry out aspects of the present invention.

The computer readable storage medium can be a tangible device that canretain and store instructions for use by an instruction executiondevice. The computer readable storage medium may be, for example, but isnot limited to, an electronic storage device, a magnetic storage device,an optical storage device, an electromagnetic storage device, asemiconductor storage device, or any suitable combination of theforegoing. A non-exhaustive list of more specific examples of thecomputer readable storage medium includes the following: a portablecomputer diskette, a hard disk, a random access memory (RAM), aread-only memory (ROM), an erasable programmable read-only memory (EPROMor Flash memory), a static random access memory (SRAM), a portablecompact disc read-only memory (CD-ROM), a digital versatile disk (DVD),a memory stick, a floppy disk, a mechanically encoded device such aspunch-cards or raised structures in a groove having instructionsrecorded thereon, and any suitable combination of the foregoing. Acomputer readable storage medium, as used herein, is not to be construedas being transitory signals per se, such as radio waves or other freelypropagating electromagnetic waves, electromagnetic waves propagatingthrough a waveguide or other transmission media (e.g., light pulsespassing through a fiber-optic cable), or electrical signals transmittedthrough a wire.

Computer readable program instructions described herein can bedownloaded to respective computing/processing devices from a computerreadable storage medium or to an external computer or external storagedevice via a network, for example, the Internet, a local area network, awide area network and/or a wireless network. The network may comprisecopper transmission cables, optical transmission fibers, wirelesstransmission, routers, firewalls, switches, gateway computers and/oredge servers. A network adapter card or network interface in eachcomputing/processing device receives computer readable programinstructions from the network and forwards the computer readable programinstructions for storage in a computer readable storage medium withinthe respective computing/processing device.

Computer readable program instructions for carrying out operations ofthe present invention may be assembler instructions,instruction-set-architecture (ISA) instructions, machine instructions,machine dependent instructions, microcode, firmware instructions,state-setting data, configuration data for integrated circuitry, oreither source code or object code written in any combination of one ormore programming languages, including an object oriented programminglanguage such as Smalltalk, C++, or the like, and procedural programminglanguages, such as the “C” programming language or similar programminglanguages. The computer readable program instructions may executeentirely on the user's computer, partly on the user's computer, as astand-alone software package, partly on the user's computer and partlyon a remote computer or entirely on the remote computer or server. Inthe latter scenario, the remote computer may be connected to the user'scomputer through any type of network, including a local area network(LAN) or a wide area network (WAN), or the connection may be made to anexternal computer (for example, through the Internet using an InternetService Provider). In some embodiments, electronic circuitry including,for example, programmable logic circuitry, field-programmable gatearrays (FPGA), or programmable logic arrays (PLA) may execute thecomputer readable program instructions by utilizing state information ofthe computer readable program instructions to personalize the electroniccircuitry, in order to perform aspects of the present invention.

Aspects of the present invention are described herein with reference toflowchart illustrations and/or block diagrams of methods, apparatus(systems), and computer program products according to embodiments of theinvention. It will be understood that each block of the flowchartillustrations and/or block diagrams, and combinations of blocks in theflowchart illustrations and/or block diagrams, can be implemented bycomputer readable program instructions.

These computer readable program instructions may be provided to aprocessor of a general purpose computer, special purpose computer, orother programmable data processing apparatus to produce a machine, suchthat the instructions, which execute via the processor of the computeror other programmable data processing apparatus, create means forimplementing the functions/acts specified in the flowchart and/or blockdiagram block or blocks. These computer readable program instructionsmay also be stored in a computer readable storage medium that can directa computer, a programmable data processing apparatus, and/or otherdevices to function in a particular manner, such that the computerreadable storage medium having instructions stored therein comprises anarticle of manufacture including instructions which implement aspects ofthe function/act specified in the flowchart and/or block diagram blockor blocks.

The computer readable program instructions may also be loaded onto acomputer, other programmable data processing apparatus, or other deviceto cause a series of operational steps to be performed on the computer,other programmable apparatus or other device to produce a computerimplemented process, such that the instructions which execute on thecomputer, other programmable apparatus, or other device implement thefunctions/acts specified in the flowchart and/or block diagram block orblocks.

The flowchart and block diagrams in the Figures illustrate thearchitecture, functionality, and operation of possible implementationsof systems, methods, and computer program products according to variousembodiments of the present invention. In this regard, each block in theflowchart or block diagrams may represent a module, segment, or portionof instructions, which comprises one or more executable instructions forimplementing the specified logical function(s). In some alternativeimplementations, the functions noted in the blocks may occur out of theorder noted in the Figures. For example, two blocks shown in successionmay, in fact, be executed substantially concurrently, or the blocks maysometimes be executed in the reverse order, depending upon thefunctionality involved. It will also be noted that each block of theblock diagrams and/or flowchart illustration, and combinations of blocksin the block diagrams and/or flowchart illustration, can be implementedby special purpose hardware-based systems that perform the specifiedfunctions or acts or carry out combinations of special purpose hardwareand computer instructions.

The descriptions of the various embodiments of the present inventionhave been presented for purposes of illustration, but are not intendedto be exhaustive or limited to the embodiments disclosed. Manymodifications and variations will be apparent to those of ordinary skillin the art without departing from the scope and spirit of the describedembodiments. The terminology used herein was chosen to best explain theprinciples of the embodiments, the practical application or technicalimprovement over technologies found in the marketplace, or to enableothers of ordinary skill in the art to understand the embodimentsdisclosed herein.

Improvements and modifications can be made to the foregoing withoutdeparting from the scope of the present invention.

What is claimed is:
 1. A computer-implemented method for windowplacement, comprising: gathering data of user preferences of size andposition of windows in a visual display through use of the visualdisplay, wherein windows relate to resources accessed by a user of adata processing system; determining, upon a new display action, acurrent context of the visual display, wherein the current contextincludes existing windows in the visual display; and applying the dataof user preferences to the new display action to provide an updateddisplay context, wherein the applying includes influencing one or moresizes and one or more positions of one or more windows in the visualdisplay.
 2. The method of claim 1, wherein the user preferences relateto resource categories of windows; wherein the new display action isopening a window for a resource in the visual display; and whereinapplying the data of user preferences further comprises applying afunction of a size and a position of a window of a same category ofresource.
 3. The method of claim 1, wherein the new display action is achange to a number of monitors in the visual display and whereinapplying the data of user preferences further comprises influencing oneor more sizes and one or more positions of multiple windows across oneor more monitors.
 4. The method of claim 1, wherein gathering data ofuser preferences further comprises gathering window data from one ormore of an operating system and screen capture.
 5. The method of claim1, wherein gathering data of user preferences further comprisesgathering data when a new window is displayed.
 6. The method of claim 1,further comprising receiving user categorization of windows as belongingto a category of resources.
 7. The method of claim 1, furthercomprising: monitoring a user reaction to the updated display context,and wherein the user reaction comprises movement of one or more windows;and adding the user reaction to the data of user preferences.
 8. Themethod of claim 1, further comprising: rearranging one or more existingwindows in the current context of the display to accommodate the newdisplay action.
 9. The method of claim 8, wherein rearranging one ormore existing windows is dependent on one or more types of content ofthe existing windows.
 10. The method of claim 1, wherein providing theupdated display context includes applying a decision tree to result in anearest matching updated display context, and wherein the nearestmatching updated display context accommodates the new display actionwith a least movement of existing windows.
 11. A system for windowplacement, comprising: one or more processors; and a memorycommunicatively coupled to the one or more processors, wherein thememory comprises instructions which, when executed by the one or moreprocessors, cause the one or more processors to perform a methodcomprising: gathering data of user preferences of size and position ofwindows in a visual display through use of the visual display, whereinwindows relate to resources accessed by a user of a data processingsystem; determining, upon a new display action, a current context of thevisual display, wherein the current context includes existing windows inthe visual display; and applying the data of user preferences to the newdisplay action to provide an updated display context, wherein theapplying includes influencing one or more sizes and one or morepositions of one or more windows in the visual display.
 12. The systemof claim 11, wherein the user preferences relate to resource categoriesof windows; wherein the new display action is opening a window for aresource in the visual display; and wherein applying the data of userpreferences further comprises applying a function of a size and aposition of a window of a same category of resource.
 13. The system ofclaim 11, wherein the new display action is a change to a number ofmonitors in the visual display and wherein applying the data of userpreferences further comprises influencing one or more sizes and one ormore positions of multiple windows across one or more monitors.
 14. Thesystem of claim 11, wherein gathering data of user preferences furthercomprises gathering window data from one or more of an operating systemand screen capture.
 15. The system of claim 11, wherein gathering dataof user preferences further comprises gathering data when a new windowis displayed.
 16. The system of claim 11, further comprising receivinguser categorization of windows as belonging to a category of resources.17. The system of claim 11, further comprising: monitoring a userreaction to the updated display context, and wherein the user reactioncomprises movement of one or more windows; and adding the user reactionto the data of user preferences.
 18. The system of claim 11, furthercomprising: rearranging one or more existing windows in the currentcontext of the display to accommodate the new display action.
 19. Thesystem of claim 11, wherein providing the updated display contextincludes applying a decision tree to result in a nearest matchingupdated display context, and wherein the nearest matching updateddisplay context accommodates the new display action with a leastmovement of existing windows.
 20. A computer program product for windowplacement, the computer program product comprising a computer readablestorage medium having program instructions embodied therewith, theprogram instructions executable by a processor to cause the processorto: gather data of user preferences of size and position of windows in avisual display through use of the visual display, wherein windows relateto resources accessed by a user of a data processing system; determine,upon a new display action, a current context of the visual display,wherein the current context includes existing windows in the visualdisplay; and applying the data of user preferences to the new displayaction to provide an updated display context, wherein the applyingincludes influencing the one or more sizes and one or more positions ofone or more windows in the visual display.